package com.xc.round2Assessment.petStore.pet.strategyContext;

import com.xc.round2Assessment.petStore.pet.strategy.AnimalStrategy;

/**
 * @author Xc
 * @version 1.0
 * Context 封装角色/上下文角色
 * 连接了策略模式 以及 实际调用该策略的其他对象
 */
public class BuyContext {
    private AnimalStrategy animalStrategy;

    // 构造器中传入的是 继承了 AnimalStrategy 的子类
    public BuyContext(AnimalStrategy animalStrategy) {
        this.animalStrategy = animalStrategy;
    }

    public AnimalStrategy execute(Integer choice) { // 动态绑定到实际的类， 执行 pay 方法， 统一归为 execute
        return this.animalStrategy.buy(choice);
    }
}
